import random
import sys

def generate_test_case(n, seed=None):
    """生成测试用例
    
    Args:
        n: 数组长度为n+1
        seed: 随机数种子，用于重现测试用例
    
    Returns:
        包含重复数的数组
    """
    if seed is not None:
        random.seed(seed)
    
    # 生成1到n的数组
    nums = list(range(1, n + 1))
    # 随机选择一个重复的数
    duplicate = random.randint(1, n)
    # 随机选择插入位置
    insert_pos = random.randint(0, n)
    # 插入重复的数
    nums.insert(insert_pos, duplicate)
    # 打乱数组
    random.shuffle(nums)
    
    return nums

def main():
    """命令行工具：生成测试数据并输出到文件或标准输出"""
    import argparse
    
    parser = argparse.ArgumentParser(description='生成寻找重复数的测试数据')
    parser.add_argument('-n', type=int, default=10, help='数组长度为n+1 (默认: 10)')
    parser.add_argument('--seed', type=int, help='随机数种子，用于重现测试用例')
    parser.add_argument('-o', '--output', help='输出文件路径，不指定则输出到标准输出')
    
    args = parser.parse_args()
    
    if args.n < 1:
        print("错误: n必须大于等于1", file=sys.stderr)
        sys.exit(1)
    
    nums = generate_test_case(args.n, args.seed)
    
    output = ' '.join(map(str, nums))
    if args.output:
        with open(args.output, 'w') as f:
            f.write(output)
    else:
        print(output)

if __name__ == "__main__":
    main()